package com.kuson.myrule;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ribbon调用服务的方式
 *  RoundRobinRule 轮询
 *  RandomRule    随机
 *  RetryRule 先按照RoundRobinRule的策略获取服务，如果获取服务失败则在指定时间内会进行重试
 *  WeightedResponseTimeRule 对RoundRobinRule的扩展，响应速度越快的实例选择权重越大，越容易被选择
 *  BestAvailableRule 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务，然后选择一个并发量最小的服务
 *  AvailabilityFilteringRule  先过滤掉故障实例，再选择并发较小的实例
 *  ZoneAvoidanceRule 默认规则，复合判断server所在区域的性能和server的可用性选择服务器
 *
 * 使用ribbon中得随机访问服务。
 * 最后要子啊主启动类上添加注解使springboot知道这个自定义切换规则的存在
 * 注意：是不能在 @ComponentScan 注解下面来自定切换规则
 *
 */
@Configuration
public class MyRule {
    @Bean
    public IRule myRules(){
        return new RandomRule();//定义为随机
    }
}
